package com.nightsoul.shiro.test.chapter10.session;

import java.io.Serializable;

import org.apache.shiro.session.Session;
import org.apache.shiro.session.mgt.eis.CachingSessionDAO;

public class InvalidSessionDAO extends CachingSessionDAO {

	/**
	 * 更新会话；如更新会话最后访问时间/停止会话/设置超时时间/设置移除属性等会调用 
	 */
	@Override
	protected void doUpdate(Session session) {
		System.out.println("update session:" + session.getId());
	}

	/**
	 * 删除会话；当会话过期/会话停止（如用户退出时）会调用 
	 */
	@Override
	protected void doDelete(Session session) {
		System.out.println("delete session:" + session.getId());
	}

	/**
	 * 如DefaultSessionManager在创建完session后会调用该方法；
	 * 如保存到关系数据库/文件系统/NoSQL数据库；即可以实现会话的持久化；返回会话ID；
	 * 主要此处返回的ID.equals(session.getId())； 
	 */
	@Override
	protected Serializable doCreate(Session session) {
		Serializable sessionId = super.generateSessionId(session);
		System.out.println("create session:" + sessionId);
		return sessionId;
	}

	/**
	 * 根据会话ID获取会话
	 */
	@Override
	protected Session doReadSession(Serializable sessionId) {
		System.out.println("read session:" + sessionId);
		return null;
	}

}
